home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / graphics / gnuplot / term / vws.trm < prev    next >
Text File  |  1993-09-15  |  8KB  |  293 lines

  1. /*
  2.  * $Id: vws.trm%v 3.50 1993/07/09 05:35:24 woo Exp $
  3.  *
  4.  */
  5.  
  6. /* GNUPLOT - vws.trm */
  7. /*
  8.  * Copyright (C) 1990 - 1993
  9.  *
  10.  * Permission to use, copy, and distribute this software and its
  11.  * documentation for any purpose with or without fee is hereby granted,
  12.  * provided that the above copyright notice appear in all copies and
  13.  * that both that copyright notice and this permission notice appear
  14.  * in supporting documentation.
  15.  *
  16.  * Permission to modify the software is granted, but not the right to
  17.  * distribute the modified code.  Modifications are to be distributed
  18.  * as patches to released version.
  19.  *
  20.  * This software  is provided "as is" without express or implied warranty.
  21.  *
  22.  * This file is included by ../term.c.
  23.  *
  24.  * This terminal driver supports:
  25.  *   IRIS terminals
  26.  *
  27.  * AUTHORS
  28.  *   Walter Speth
  29.  *           BITNET: SPETH@DBNPIB5
  30.  *
  31.  * send your comments or suggestions to (info-gnuplot@dartmouth.edu).
  32.  *
  33.  */
  34.  
  35. #define VWS_XMAX   1024
  36. #define VWS_YMAX   780
  37. #define VWS_VCHAR  25
  38. #define VWS_HCHAR  15
  39. #define VWS_VTIC   10
  40. #define VWS_HTIC   10
  41.  
  42. #include stdio
  43. /*
  44. #include math
  45. #include ssdef
  46. */
  47. #include descrip
  48.  
  49. #include <uisentry.h>
  50. #include <uisusrdef.h>
  51.  
  52.  
  53. #define DEFAULT_ATTR 0
  54. #define OVER_ATTR 1
  55. #define ERAS_ATTR 2
  56. #define BIS_ATTR 3
  57. #define COLOR_ATTR 4
  58. #define TEXT_ATTR 5
  59. #define LINE_ATTR 6
  60. #define BACK_ATTR 7
  61.  
  62.  
  63. float current_x, current_y;
  64.  
  65.  
  66. int vd_id, wd_id;
  67. int vcm_id;
  68.  
  69. static $DESCRIPTOR(ws_devname, "SYS$WORKSTATION");
  70. static $DESCRIPTOR(vd_title, "gnuplot");
  71.  
  72. static float x0, y0, xsiz, ysiz,
  73.              wc_xmin_new, wc_ymin_new, wc_xmax_new, wc_ymax_new,
  74.              wc_xmin, wc_ymin, wc_xmax, wc_ymax,
  75.              vd_width, vd_height;
  76.  
  77. VWS_resize_ast()
  78. { uis$resize_window(&vd_id, &wd_id, &x0, &y0, &xsiz, &ysiz,
  79.                      &wc_xmin, &wc_ymin, &wc_xmax, &wc_ymax);
  80.   replotrequest();
  81. }
  82. /****************************************************************************/
  83. VWS_init()
  84.  
  85.  
  86. {
  87.   int i;
  88.   int cattr;
  89.   $DESCRIPTOR(a_font,"DTABER0003WK00PG0001UZZZZ02A000");
  90.  
  91.   vd_width  = 14;
  92.   vd_height = 10; /* aspect sqrt(2) as DIN A paper */
  93.  
  94.   wc_xmin = 0.0;
  95.   wc_ymin = 0.0;
  96.   wc_xmax = (float) VWS_XMAX;
  97.   wc_ymax = (float) VWS_YMAX;
  98.  
  99.   vcm_id = uis$create_color_map(&8);
  100.  
  101.   vd_id = uis$create_display(&wc_xmin, &wc_ymin, &wc_xmax, &wc_ymax,
  102.                              &vd_width, &vd_height, &vcm_id);
  103.  
  104.   uis$set_color(&vd_id, &0, &.5, &.5, &.5);
  105.   uis$set_color(&vd_id, &1, &0.0, &0.0, &0.0);
  106.   uis$set_color(&vd_id, &2, &0.0, &0.0, &0.0);
  107.   uis$set_color(&vd_id, &3, &0.0, &0.0, &0.0);
  108.   uis$set_color(&vd_id, &4, &0.0, &0.0, &0.0);
  109.   uis$set_color(&vd_id, &5, &0.0, &0.0, &0.0);
  110.   uis$set_color(&vd_id, &6, &0.0, &0.0, &0.0);
  111.   uis$set_color(&vd_id, &7, &0.0, &0.0, &0.0);
  112.  
  113. /*
  114.   uis$set_color(&vd_id, &2, &.2, &.2, &.2);
  115.   uis$set_color(&vd_id, &3, &.3, &.3, &.3);
  116.   uis$set_color(&vd_id, &4, &.4, &.4, &.4);
  117.   uis$set_color(&vd_id, &5, &.5, &.5, &.5);
  118.   uis$set_color(&vd_id, &6, &.6, &.6, &.6);
  119.   uis$set_color(&vd_id, &7, &.7, &.7, &.7);
  120.  
  121. /* perhaps better for color terms (which I do not have)
  122.   uis$set_color(&vd_id, &0, &0.0, &0.0, &0.0);
  123.   uis$set_color(&vd_id, &1, &0.9, &0.0, &0.0);
  124.   uis$set_color(&vd_id, &2, &0.0, &0.9, &0.0);
  125.   uis$set_color(&vd_id, &3, &0.9, &0.9, &0.0);
  126.   uis$set_color(&vd_id, &4, &0.0, &0.0, &0.9);
  127.   uis$set_color(&vd_id, &5, &0.9, &0.0, &0.9);
  128.   uis$set_color(&vd_id, &6, &0.0, &0.9, &0.9);
  129.   uis$set_color(&vd_id, &7, &0.9, &0.9, &0.9);
  130. /*
  131. */
  132.   uis$disable_display_list(&vd_id);
  133.  
  134.   wd_id = uis$create_window(&vd_id, &ws_devname, &vd_title,
  135.                             &wc_xmin, &wc_ymin, &wc_xmax, &wc_ymax,
  136.                             &vd_width, &vd_height);
  137.  
  138.   uis$set_resize_ast(&vd_id, &wd_id, &VWS_resize_ast, &0,
  139.                      &x0, &y0, &xsiz, &ysiz,
  140.                      &wc_xmin_new, &wc_ymin_new, &wc_xmax_new, &wc_ymax_new);
  141.  
  142.   uis$set_writing_mode(&vd_id, &DEFAULT_ATTR, &OVER_ATTR, &UIS$C_MODE_OVER);
  143.   uis$set_writing_mode(&vd_id, &DEFAULT_ATTR, &ERAS_ATTR, &UIS$C_MODE_ERAS);
  144.   uis$set_writing_mode(&vd_id, &DEFAULT_ATTR, &BIS_ATTR, &UIS$C_MODE_BIS);
  145. /*
  146.   for (i=0; i<8; i++) {
  147.     cattr = COLOR_ATTR+i;
  148.     uis$set_writing_index(&vd_id, ©_ATTR, &cattr, &i);
  149.     }
  150. */
  151.   uis$set_background_index(&vd_id, &DEFAULT_ATTR, &BACK_ATTR, &0);
  152.   uis$set_writing_mode(&vd_id, &DEFAULT_ATTR, &TEXT_ATTR, &UIS$C_MODE_OVER);
  153.   uis$set_font(&vd_id,&TEXT_ATTR,&TEXT_ATTR,&a_font);
  154.   uis$set_char_size(&vd_id,&TEXT_ATTR,&TEXT_ATTR,&0,
  155.                     &(float)VWS_HCHAR,&(float)VWS_VCHAR);
  156.   uis$set_line_style(&vd_id,&LINE_ATTR,&LINE_ATTR,&0xFFFFFFFF);
  157. }
  158.  
  159. /****************************************************************************/
  160.  
  161. VWS_reset()
  162. {
  163.   uis$delete_display(&vd_id);
  164. }
  165. /****************************************************************************/
  166. VWS_scale(xs,ys)
  167. int xs,ys;
  168. {
  169.         return FALSE;
  170. }
  171. /****************************************************************************/
  172. VWS_graphics()
  173. {
  174.     uis$erase(&vd_id, &wc_xmin, &wc_ymin, &wc_xmax, &wc_ymax);
  175. }
  176. /****************************************************************************/
  177. VWS_text()
  178. {
  179. }
  180. /****************************************************************************/
  181. VWS_move(x,y)
  182. int x,y;
  183. {
  184.   current_x= (float)(x);
  185.   current_y= (float)(y);
  186. }
  187. /****************************************************************************/
  188. VWS_vector(x,y)
  189. int x,y;
  190. { int col;
  191.   float fx,fy;
  192.   fx=(float) x;
  193.   fy=(float) y;
  194.  
  195.       uis$line(&vd_id, &LINE_ATTR,
  196.                ¤t_x, ¤t_y, &fx, &fy);
  197.       VWS_move (x,y);
  198. }
  199. /****************************************************************************/
  200. VWS_linetype(lt)
  201. int lt;
  202. {
  203. long int lstyle[9]={    0xffffffff,
  204.                         0Xff00ff00,
  205.                         0xffffff00,
  206.                         0xffff0000,
  207.                         0xf0f0f0f0,
  208.                         0Xfff0fff0,
  209.                         0xf000f000,
  210.                         0xa5a5a5af,
  211.                         0xf00f00f0 };
  212.  
  213.   switch(lt) {
  214. case -1: uis$set_line_style(&vd_id,&LINE_ATTR,&LINE_ATTR,&0xFFFFFFFF);
  215.          uis$set_line_width(&vd_id,&LINE_ATTR,&LINE_ATTR,&1.5);
  216.          break;
  217. case -2: uis$set_line_style(&vd_id,&LINE_ATTR,&LINE_ATTR,&0xFFFFFFFF);
  218.          uis$set_line_width(&vd_id,&LINE_ATTR,&LINE_ATTR,&2.0);
  219.          break;
  220. /*
  221. default:  uis$set_line_style(&vd_id,&LINE_ATTR,&LINE_ATTR,&lstyle[lt % 8]);
  222.           makes part of curve disappear on my workstation
  223. */
  224. default:  uis$set_line_style(&vd_id,&LINE_ATTR,&LINE_ATTR,&0xFFFFFFFF);
  225.          uis$set_line_width(&vd_id,&LINE_ATTR,&LINE_ATTR,&1.0);
  226. }
  227. }
  228.  
  229. /****************************************************************************/
  230. static int justify_mode =CENTRE,up;;
  231.  
  232. VWS_put_text(x,y,str)
  233. int x,y; char* str;
  234. {
  235.   float fx,fy, thih, twid;
  236.  
  237.  
  238. /* uis$text parameter is descriptor string not character string */
  239.  
  240.   struct dsc$descriptor_s textline = {0,DSC$K_DTYPE_T,DSC$K_CLASS_S,""};
  241.  
  242.  
  243.   textline.dsc$a_pointer = str;
  244.   textline.dsc$w_length = strlen(textline.dsc$a_pointer);
  245.   uis$measure_text(&vd_id,&TEXT_ATTR,&textline,&twid,&thih);
  246.   fx=(float)x;
  247.   fy=(float)y;
  248.  
  249.   switch (justify_mode) {
  250.   case LEFT : fy+=thih/2.;
  251.               break;
  252.   case RIGHT : fy+=thih/2.;
  253.                fx-=twid;
  254.               break;
  255.  
  256.   case CENTRE : fy+=thih/2.;
  257.                fx-=twid/2;
  258.               break;
  259.   };
  260.  
  261.   uis$text(&vd_id,&TEXT_ATTR,&textline,&fx,&fy);
  262.      /* write to Example Viewport window */
  263.  
  264.  
  265. }
  266. /****************************************************************************/
  267. VWS_text_angle(ang)
  268. int ang;
  269. {
  270.   float degrees;
  271.   degrees=90.*(up=ang);
  272.   uis$set_text_slope (&vd_id, &TEXT_ATTR, &TEXT_ATTR, °rees);
  273. return TRUE;
  274. }
  275. /****************************************************************************/
  276. VWS_justify_text(mode)
  277. int mode;
  278. { justify_mode=mode;
  279. return TRUE;
  280. }
  281. /****************************************************************************/
  282. VWS_point(x,y,point)
  283. int x,y,point;
  284. {
  285. do_point(x,y,point);
  286. }
  287. /****************************************************************************/
  288. VWS_arrow(sx,sy,ex,ey)
  289. int sx,sy,ex,ey;
  290. {
  291. do_arrow(sx,sy,ex,ey);
  292. }
  293.